package com.itany.corejava.code04_循环结构;

import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2024年01月11日 9:23
 * 用户输入一个奇数的数字,在控制台通过星号*打印菱形
 * 输入的数字表示图形的行数
 *       *
 *     * * *
 *   * * * * *
 * * * * * * * *
 *   * * * * *
 *     * * *
 *       *
 */
public class Test17_打印菱形 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入菱形的行数(必须是奇数):");
        int rows = sc.nextInt();
        // 打印时可以将菱形拆分成两块
        // 上面半个是等腰三角形
        // 下面半个是倒等腰三角形
        // 将两块内容分别进行打印
        // 先打印等腰三角形
        // 将中间一行算在等腰三角形中
        for (int i = 1; i <= rows / 2 + 1; i++) {
            // 打印空格
            for (int j = 1; j <= rows / 2 + 1 - i; j++) {
                System.out.print("  ");
            }
            // 打印星号
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("* ");
            }
            // 内层循环结束之后换行
            System.out.println();
        }

        // 再打印倒等腰三角形
        // 下半面总行数:rows/2
        for (int i = 1; i <= rows / 2; i++) {
            // 打印空格
            // 由于中间一行没有算在下半面
            // 因此,此时的倒等腰三角形每一行会多出一个空格
            for (int j = 1; j <= i; j++) {
                System.out.print("  ");
            }
            // 打印星号
            for (int j = 1; j <= 2 * (rows / 2 - i) + 1; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }
}
